#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ncurses.h>

void tc(FILE *file);
void tx(FILE *file);

int main(int argc,char *argv[]){
	initscr();
	FILE *file=fopen("./main.c","r");
	tx(file);
	rewind(file);
	tc(file);
	refresh();
	getch();
	endwin();
	return 0;
}

void tc(FILE *file)
{
	move(1,0);
	refresh();
	char ch[18];
	int i=0,j=0;
	while(fgets(ch,17,file)!=NULL){
		printw("       ");
		j++;
		for(i=0;i<16;i++){
			if(ch[i]=='\n'){   
				i++;
				printw(" ");
				printw("\\n");
			}
			if(ch[i]=='\t'){
				if(ch[i+1]!='\t'){
					i++;
				}
				printw(" ");
				printw("\\t ");
			}
			if(ch[i]=='\0')
				break;
			if(ch[i]!='\t'){
				printw("  %c ", ch[i]);
			}
		}
		move(1+j*2,0);
	}
}

void tx(FILE *file)
{
	    //Initialize the coordinates
	    //Set the position
	    move(0,0);
	    refresh();
	    char ch[18];
	    int i,j=1;
	    while(fgets(ch,17,file)!=NULL){
		   printw("%07o",16*(j-1));
   		   for(i=0;i<16;i++){
			   if(i%4==0){
				   printw("       ");
			   }
   			   if(ch[i]=='\n'){
   				   i++;
   				   printw("%02x",'\n');
   			   }
   			   if(ch[i]=='\0')
   				   break;
   			   printw("%02x",ch[i]);
			   if(i%4==3){
				   printw(" ");
			   }
   		   }
   		   move(j*2,0);
   		   j++;
	    }
	    printw("%07o",16*(j-1)+i);
}
